package com.softeem.music_sys.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.softeem.music_sys.entity.Music;
import com.baomidou.mybatisplus.extension.service.IService;
import com.softeem.music_sys.comm.Result;

import java.util.List;

/**
* @author RD
* @description 针对表【music(音乐信息表)】的数据库操作Service
* @createDate 2025-11-07 11:19:17
*/
public interface MusicService extends IService<Music> {

    /**
     * 根据专辑ID获取音乐列表
     */
    Page<Music> getMusicsByAlbum(Integer albumId, Integer page, Integer limit);

    /**
     * 搜索音乐
     */
    Page<Music> searchMusic(String keyword, Integer page, Integer limit);

    /**
     * 获取热门音乐
     */
    List<Music> getHotMusic(Integer limit);

    /**
     * 获取最新音乐
     */
    List<Music> getNewMusic(Integer limit);

    /**
     * 增加播放次数
     */
    boolean increasePlayCount(Integer musicId);
    
    /**
     * 添加音乐
     */
    Result addMusic(Music music);
    
    /**
     * 根据ID获取音乐信息
     */
    Result getMusicById(Integer id);
    
    /**
     * 更新音乐信息
     */
    Result updateMusic(Music music);
    
    /**
     * 删除音乐
     */
    Result deleteMusic(Integer id);
    
    /**
     * 获取音乐列表
     */
    Result getMusicList(Integer page, Integer limit);
    
    /**
     * 搜索音乐（Controller调用）
     */
    Result searchMusicController(String name, Integer page, Integer limit);
    
    /**
     * 获取专辑的音乐（Controller调用）
     */
    Result getMusicsByAlbumController(Integer albumId, Integer page, Integer limit);
    
    /**
     * 获取热门音乐（Controller调用）
     */
    Result getHotMusicController(Integer page, Integer limit);
    
    /**
     * 获取最新音乐（Controller调用）
     */
    Result getNewMusicController(Integer page, Integer limit);
    
    /**
     * 播放音乐（Controller调用）
     */
    Result playMusicController(Integer id);
    
    /**
     * 修改音乐状态（Controller调用）
     */
    Result updateStatusController(Integer id, Integer status);
}